package model.validator
{
	import model.registry.ColorTable;
	import model.registry.ErrorMessage;

	/**
	 * 设备
	 **/
	public class DeviceUtil
	{
		public static var TYPE_10 : int = 10;
		public static var TYPE_11 : int = 11;
		public static var TYPE_12 : int = 12;
		
		public static var TYPE_19 : int = 19;
		
		private static var itemValue:Object;
		
		/**
		 * type_id 为10和11的设备，
			定位数据中表示GPS是否有效的参数是GPS_position，其中值为1表示有效，0表示无效。
			
			Type_id 为12的设备
			定位数据中表示GPS是否有效的参数是Is_valided，其中值为1表示无效，0表示有效，这里的取值正好和10，11设备相反。
		 */
		public function DeviceUtil()
		{
		}
		
		/**
		 * 返回设备类型.
		 */
		public static function getDeviceType() : int {
			return Global.currentDeviceInfo.device_type;
		}
		
		/**
		 * 返回设备状态
		 **/
		public static function getDeviceState(positionInfo:Object):Boolean
		{
			if(positionInfo != null)
			{
				itemValue = Global.currentDeviceInfo;
				if ( itemValue == null )
				{
					throw new Error(ErrorMessage.VALUE_MUST_INIT);
				}
				if (itemValue.type_id == TYPE_10 
					|| itemValue.type_id == TYPE_11) 
				{
					return (positionInfo.gps_position == 1);
				}
				else if (itemValue.type_id == TYPE_12)
				{
					return (positionInfo.is_valided == 0);
				}
				//MAPER-17 
				/*目前可以说type_id为10和11的设备是判断GPS_position参数，
				为1表示有效，0表示无效。
				而其余设备是判断Is_valided参数，
				正好相反0表示有效，1表示无效。*/
				else
				{
					return (positionInfo.is_valided == 0);
				}
			}
			return false;
		}
		
		public static function getDeviceColor(positionInfo:Object):int
		{
			return (getDeviceState(positionInfo) == true) ? ColorTable.BLACK : ColorTable.GREEN;
		}
		
		//Added by kant
		//Reason : 
		//Date : Nov 15, 2012 10:03:41 PM
		//		需要先判断是否是１，
		//		然后判断是否弹出来过。没有弹出来过才显示
		//		那么是否弹出来，就要确定，是不是同一个设备，
		//		如果是同一个设备再看看是不是同一条记录。
		//		那么是不是同一个设备看设备ＩＤ，或Ｓｎ，
		//		我们建议设备ID。是不是同一条记录，看时间就可以
		public static function isExistAlarmWindow(cAlarmItem:Object, alarmList:Array):Boolean
		{
			if ( cAlarmItem == null )
			{
				return false;
			}
						
			for each(var item:Object in alarmList)
			{
				//获取设备标识
				var itemSId:String = (item.nickname || item.sn);
				//当前窗体设备标识
				var aItemSid:String = (cAlarmItem.nickname || cAlarmItem.sn) ; 
				if (  itemSId == aItemSid && (item.dateline == cAlarmItem.dateline) )
				{
					return true;
				}
			}
			
			return false;
		}
	}
}